package br.seplan.daos;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import br.seplan.dao.conection.ConnectionFactory;
import br.seplan.entidades.Nivel;
import br.seplan.entidades.PessoaFisica;


public class PessoaDAO {
	private final String SQL_INSERT = "INSERT INTO TB_PESSOA_FISICA VALUES (?,?,?);";
	private final String SQL_SELECT_ALL = "SELECT * FROM TB_PESSOA_FISICA;";
	
	public void cadastrar(PessoaFisica pessoaFisica){
		Connection conexaoComOBanco = ConnectionFactory.conectar();
		try {
			PreparedStatement ps = conexaoComOBanco.prepareStatement(SQL_INSERT);
			ps.setString(1, pessoaFisica.getNome());
			ps.setString(2, pessoaFisica.getCpf());
			ps.setInt(3, pessoaFisica.getNivel().ordinal());
			ps.execute();
			ConnectionFactory.desconectar(conexaoComOBanco);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public ArrayList<PessoaFisica> findAll(){
		Connection conexaoComOBanco = ConnectionFactory.conectar();
		ArrayList<PessoaFisica> pessoas = new ArrayList<PessoaFisica>();
		try {
			PreparedStatement ps = conexaoComOBanco.prepareStatement(SQL_SELECT_ALL);
			ResultSet linhas = ps.executeQuery();
			while (linhas.next()) {
				PessoaFisica pf = new PessoaFisica(linhas.getString("nome"), linhas.getString("cpf"), Nivel.findNivelByOrdinal(linhas.getInt("nivel")));
				pessoas.add(pf);
			}
			ConnectionFactory.desconectar(conexaoComOBanco);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return pessoas;
	}
}
